Processing data packets using a policy based network path

ABSTRACT

Methods and systems are provided for processing data packets in a data network using a policy based network path. A policy enforcing point receives a data packet associated with a service session and routes it toward its destination along a network path which is determined according to data packet information and one or more packet processing criteria. The data packet information may include one or more of information associated with the packet, information associated with prior packets, and information obtained from a network computer. The network path may be selected from a database of network paths. The network path may include an order list of further policy enforcing points and corresponding network application appliances. The policy enforcing point may generate a new data packet based on the data packet and the policy based network path and send the new data packet to a next policy enforcing point.

CROSS-REFERENCE TO RELATED APPLICATIONS

This patent application claims the priority benefit of U.S. provisionalpatent application No. 61/799,244, filed Mar. 15, 2013, the disclosureof which is incorporated by reference herein in its entirety.

TECHNICAL FIELD

The present invention relates generally to data processing, and moreparticularly to processing data packets using a policy based networkpath.

BACKGROUND

Data networks such as the Internet, enterprise data networks, mobilebroadband networks, and cloud networks, have become an integral part ofour lives. We use data networks to obtain news, gather productinformation, reserve a table for dinner, submit a payment, purchase agood, read a book, find a map, make or receive phone calls, conduct orjoin a conferencing event, participate in a meeting, work on a document,approve a promotion, chat with a friend, watch television and videos,book a plane ticket, and do many other things in our normal lifestyle orwork style. Typically we use a host computing device such as asmartphone, a tablet, a laptop, a personal computer, or a smarttelevision, to communicate with an application service server to performone or more tasks over a service session. The server is typically acomputing device. The service session includes a plurality of datapackets routing through a data network.

Currently, a host device sends data packets through the data network tothe server device. Conversely the server device sends response datapackets through the data network to the host device. The network path,in which data packets traverse from the host device to the serverdevice, is pre-set by the data network using one or more networkforwarding protocols such as Internet routing protocols, Ethernetprotocols, and other layer 2 or layer 3 protocols. The network pathtypically consists of network switches and routers.

The data packets of the service session is usually subjected to a numberof inspections and controls before the data packets are delivered to thedestination host device or server device. These network inspections andcontrols are performed by special network application appliances. Thereare security related inspections and controls such as IDS (intrusiondetection system), firewall, lawful interception, malware detection andmany others. There are company specific security inspections andcontrols that detects for document transfer, email scan, user accesscontrol, and others. There are network traffic inspections and controlssuch as bandwidth management, quality of service, tariff control andothers. There are network monitoring inspections and controls such asrating, sampling, packet tracing and others. There are networkoptimization inspection and controls such as content caching, datade-duplication, email access optimization, and others.

It is very common for a network administrator to deploy one or more suchnetwork inspections and controls to a service session. In order for theinspection and control to function properly, a network administratormust know the preset network path of the service session and deploy thenetwork application appliance along the preset network path. To assurethe service session is subjected to the inspection and control functionof the deployed network application appliance, the network administratoralso needs to engineer and plan the data network such that any changes,due to a change of the network switches and routers, from the presetnetwork path to a new preset network path, the new preset network pathneeds to include the deployed network application appliance.

Additionally, network inspection and control functions are usuallycomputing and/or resource intensive. When their capacities are reached,the network administrator needs to deploy additional network applicationappliances, or utilize other less busy network application appliances inthe data network. Deploying additional network application appliancesrequires, as mentioned above, careful planning and engineering of thedata network in order for the plurality of network applicationappliances to share the processing or resource load, and to ensure thenetwork paths of a plurality of service sessions to pass through theplurality of network application appliances in an evenly distributedmanner. Utilizing other less busy network application appliances isoften not possible as the network paths are pre-determined by thenetworking protocols outside the scope of the network applicationappliance.

SUMMARY

This summary is provided to introduce a selection of concepts in asimplified form that are further described in the Detailed Descriptionbelow. This summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used as an aid in determining the scope of the claimed subjectmatter.

The present disclosure concerns methods by which a data packet may berouted toward its destination along a network path. The network pathpasses through one or more policy enforcing points; each of each may beassociated with a network appliance which may perform one or moreoperations on the data packet. Each policy enforcing point may determineone or more segments of the remaining portion of the network path byapplying one or more packet processing criteria to informationassociated with the content of the packet.

In some embodiments, the network path may be selected from one or morepolicy based network paths which are stored in a database.

In some embodiments, the policy enforcing point may create a new datapacket based on the data packet. The new data packet may include thedata packet and the policy based network path. The policy based networkpath may be embodied in an order list which determines the furtherpolicy enforcing points along the network path. The policy based networkpath may be encapsulated in a protocol header which is incorporated intothe new data packet.

In some embodiments, the policy enforcing point may create a tunnelingcommunication session, create a new data packet adopted for thetunneling communication session, the new data packet incorporating thedata packet, and route the new data packet toward the data packet'sdestination through the tunneling communication session.

The present disclosure further concerns systems which route a datapacket along a policy based network path according to the methodsdescribed herein.

The present disclosure further concerns a non-transitorycomputer-readable medium comprising instructions, which when executed byone or more processors, route a data packet along a policy based networkpath according to the methods described herein.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments are illustrated by way of example, and not by limitation, inthe figures of the accompanying drawings, in which like referencesindicate similar elements.

FIG. 1 is a block diagram illustrating an environment within which amethod can be implemented for routing a data packet along a policy basednetwork path from a client to a server.

FIG. 2 is a block diagram of a detailed representation of a client sidepolicy enforcing point.

FIG. 3 shows a system which implements a method for routing a datapacket along a policy based network path from a server to a client.

FIG. 4 is a block diagram illustrating a server side policy enforcingpoint.

FIG. 5 shows a diagrammatic representation of a computing device for amachine in the example electronic form of a computer system, withinwhich a set of instructions for causing the machine to perform any oneor more of the methodologies discussed herein can be executed.

DETAILED DESCRIPTION

In various embodiments, a policy based data network adapts a policybased data network path for a service session between a client deviceand an application service server device in order to apply one or morenetwork inspections and controls over the service session.

A policy based data network may be a data network connected to aplurality of network application appliances, which perform one or moreinspection and control functions over a service session. The policybased data network path may include an indication of one or more networkapplication appliances corresponding to one or more network inspectionsand controls. The indication may include an order of the one or morenetwork application appliances, where the policy based data networkforwards the data packets of the service session through the one or morenetwork appliances according to the indicated order.

Turning now to the drawings, FIG. 1 shows an example embodiment in whichthe client device 102 may be a computing device connected to the policybased data network 104 using a network module of the client device. Theclient device may be a personal computer, a laptop computer, a tablet, asmartphone, a mobile phone, an Internet phone, a netbook, a homegateway, a broadband gateway, a network appliance, a set top box, amedia server, a personal media play, a personal digital assistant, anaccess gateway, a networking switch, a server computer, a networkstorage computer, or any computing device comprising a network moduleand a processor module.

The application service server device or server device 138 may be aserver computer connected to the policy based data network using anetwork module of the server computer. The application service serverdevice includes a processing module and a storage medium. The storagemedium may include executive instructions that, when executed by theprocessing module of the application service server device, performs afunction to serve an application service requested by the client device.The application service server device may serve the application servicerequested by the client device over a service session 106 where theserver device and the client device exchange data packets over theservice session. At least some of the data packets of the servicesession may be processed through the policy based data network.

The policy based data network may comprise a plurality of networkelements. These network elements may include network switches such asEthernet switches, ATM switches, optical switches and other data packetswitches. These network elements may further include network routerssuch as IP routers, wireless network elements, or cellular basestations. In various embodiments, data packets of the service sessionmay be processed and forwarded by one or more of these network elements.The policy based data network may be connected to one or more of thesenetwork elements.

In the present embodiment, the policy based data network may include oneor more policy enforcing points 110. A policy enforcing point 110 may bea networking element that includes a processor module, a network moduleand a storage module 112. The storage module 112 may store a pluralityof programming instructions that, when executed by the processor module,perform one or more functions of this invention. The network module mayconnect to one or more other policy enforcing points 110. The policyenforcing point 110 may connect to a network application appliance 116performing network inspection, load balancing or control function.

In various embodiments, a policy enforcing point 110 may connect to anetwork application appliance 116 and send data packets of the servicesession 106 to the network application appliance 116 according to thepolicy based data network path. The policy enforcing point 110 mayreceive a data packet 108 of the service session 106 from the networkapplication appliance 116. The policy enforcing point 110 determines thedata packet to be processed according to the policy based data networkpath and processes the data packet based on the policy based datanetwork path and the network application appliance 116.

In various embodiments, a network application appliance 116 may includea processor module, a network module and a storage module. The storagemodule may include a plurality of programming instructions which, whenexecuted by the processor module, performs a network applicationfunction. A network application function may include one or moresecurity functions such as intrusion detection, malware detection,firewalling, lawful interception, email scanning, or virus detection. Anetwork application function may also include one or more trafficmanagement functions such as bandwidth management, bandwidth tariffpolicing, quality of services policing, or traffic steering.Additionally, a network application function may include one or morecorporate security policing functions such as content detection, filetransfer detection, service proxy like web proxy, SSL proxy, or IPSecproxy, application identification, public user identity identification,private user identity identification, access control, or userauthentication. Furthermore, a network application function may includeone or more service optimization functions such as content caching,email and document caching, data de-duplication, video caching, serverload balancing, global server load balancing, or DNS optimization. Anetwork application function may also include one or more traffictracking functions such as packet counting, statistics sampling,application service rating, or client device rating.

In some embodiments, the policy based data network path 124, 132, 136includes a client side policy enforcing point 126. The client sidepolicy enforcing point 110 receives a data packet 108 of the servicesession 106 from the client device 102. The client side policy enforcingpoint 110 may select a policy based network path 124, 132, 136 based onthe data packet 108.

The client side policy enforcing point 110 may retrieve information 140from the data packet 108. The data packet information may include one ormore of the layer 2 information such as a MAC address or a networkinterface number, layer 3 addresses such as source IP address anddestination IP address, layer 4 address information such as sourceTCP/UDP port, destination TCP/UDP port, and TCP/UDP option, applicationlayer content information such as URL, cookie information, transactionidentity, DNS identity, session identity, receiving time of the datapacket, and data packet information 114 from a prior data packet. Theclient side policy enforcing point 110 may combine the data packetinformation 140 together with the information from prior data packets114 of the service session 106 from the client device 102 to perform theselection. The client side policy enforcing point 110 may also obtainadditional information regarding the data packet by querying a networkcomputer 118, based on the retrieved data packet information 140. Datapacket information as used herein may refer to the combination of theretrieved information 140 from the data packet 108, the information fromprior data packets 114 and the additional information obtained fromanother computer. The client side policy enforcing point 110 may use thedata packet information 140 to select the policy based data network path124, 132, 136.

Turning now to FIG. 2, in some embodiments, the storage module 204 ofthe client side policy enforcing point 202 may include a database 206 ofpolicy based data network paths 208. A policy based data network path208 in the database 206 may be associated with a packet processingcriterion 210. The client side policy enforcing point 202 matches thedata packet information 214 with the packet processing criterion 210.When the client side policy enforcing point 202 determines the datapacket information 214 matches the packet processing criterion 210, theclient side policy enforcing point 202 may select the policy based datanetwork path 220. In one embodiment, the packet processing criterion 210includes a destination IP address, a source IP address, a MAC address, anetwork interface number, a layer 4 port number, a source layer 4 portnumber, a destination layer 4 port number, an URL, an user identity, acookie value, a time value, an identity, other information in the packetor a combination of one or more of the above.

In some embodiments, the policy enforcing point 202 may create a newdata packet 218 which comprises the data packet 212 and a protocolheader 216 which contains the selected policy based data network path220.

In various embodiments, the selected network path 220 includes an orderlist of policy enforcing points and their associated network applicationappliances, and may be used to process the data packet 212. In oneembodiment, the selected network path 220 includes an order list ofnetwork application appliances. The client side policy enforcing point202 determines an order list of policy enforcing points corresponding tothe order list of network application appliances. Each determined policyenforcing point may connect to the corresponding network applicationappliance. The client side policy enforcing point 202 may use thedetermined order list of policy enforcing points as the selected networkpath to process the data packet 212.

In other embodiments, the selected network path 220 does not include theclient side policy enforcing point 202. The client side policy enforcingpoint 202 updates the selected network path 220 to include the clientside policy enforcing point 202 as the first policy enforcing point. Theclient side policy enforcing point 202 may not update the selectednetwork path 220.

Returning now to FIG. 1, in other embodiments, the client side policyenforcing point 108 may examine the network path 124, 132, 136 andselect a next policy enforcing point 126. The client side policyenforcing point 110 may identify itself in the network path 124, 132,136. The client side policy enforcing point 110 may select the policyenforcing point 126 following the client side policy enforcing point 110in the order list of policy enforcing points of the network path 124,132, 136. The client side policy enforcing point 110 may select thefirst policy enforcing point in the order list of policy enforcingpoints of the network path 124, 132, 136 as the next policy enforcingpoint 126. The client side policy enforcing point 110 may send the datapacket 108 to the next policy enforcing point 126. The client sidepolicy enforcing point 110 may generate a new data packet 120 based onthe data packet 108 and the network path 124, 132, 136, and send the newdata packet 120 to the next policy enforcing point 126. The client sidepolicy enforcing point 110 may then include this data packet 108 intothe new data packet 120, and the network path 124, 132, 136. The clientside policy enforcing point 110 may encapsulate the network path 124,132, 136 into a layer 2 protocol header such as a VLAN header or a MPLSheader. The client side policy enforcing point 110 may also establish acommunication session such as an IP tunneling session (IP in IP session,L2TP tunnel, IPSec tunnel), or other tunneling mechanism and generatethe new data packet 120 for the tunnel. The client side policy enforcingpoint 110 may include the data packet 108 and network path 124, 132, 136as the content of the new data packet 120.

In the present embodiments, the client side policy enforcing point 110may include a portion of the network path 124, 132, 136 in the new datapacket 120. The client side policy enforcing point 110 may include theportion of the order list starting from the next policy enforcing point126. Alternately, the client side policy enforcing point 110 may includethe entire network path 126 in the new data packet 120.

In various embodiments, the client side policy enforcing point 110 maysend the network path 124, 132, 136 to the next policy enforcing point126 in a different communication session. The client side policyenforcing point 110 may also send the network path 124, 132, 136 to thenext policy enforcing point 126 prior to sending the data packet 108 orthe new data packet 120 to the next policy enforcing point 126.

In the present embodiments, the client side policy enforcing point 110may send the data packet 108 or the new data packet 120 to the nextpolicy enforcing point 126 using the policy based data network. Theclient side policy enforcing point 110 may also send the data packet 108or the new data packet 120 to the next policy enforcing point 126 usingthe connected network elements.

In various embodiments, a policy enforcing point 126 may receive aclient device data packet 108 from another policy enforcing point, suchas the client side policy enforcing point 110. The policy enforcingpoint 126 may also retrieve the client device data packet 108 from adata packet 120 in a communication session between the policy enforcingpoint 126 and the other policy enforcing point 134. The policy enforcingpoint 126 may retrieve a network path 124, 132, 136 associated with theclient device data packet 108. The policy enforcing point 126 mayfurther retrieve the network path 124, 132, 136 from the data packet 120in the communication session between the policy enforcing point 126 andthe other policy enforcing point 134. The policy enforcing point 126 mayalso retrieve the network path 124, 132, 136 received prior to receivingthe client device data packet 108.

In various embodiments, the policy enforcing point 126 may examine theorder list of policy enforcing points in the network path 124, 132, 136and select a network application appliance. The policy enforcing pointmay also identify itself in the order list of policy enforcing pointsand select an associated network application appliance 130 to itself inthe order list of policy enforcing points. Furthermore, the policyenforcing point 126 may select the first associated network applicationappliance in the order list of policy enforcing points.

The policy enforcing point 126 in the order list in the network path124, 132, 136 may be associated with a plurality of network applicationappliances 128, such as an order list of a plurality of networkapplication appliances. The policy enforcing point 126 may select thefirst associated network application appliance 130 in the order list ofa plurality of network application appliances 128.

In some embodiments, the policy enforcing point 126 may send the clientdevice data packet 108 to the selected network application appliance130. The policy enforcing point 126 may establish a communicationsession with the selected network application appliance 130 and send theclient device data packet 108 over the communication session.

The network application appliance 130 may receive the client device datapacket 108, process the client device data packet 108 and send theresulting client device data packet 108 to the policy enforcing point126. The network application appliance 130 may also modify the clientdevice data packet 108 as a result of processing the client device datapacket 108. The network application appliance 130 may send the clientdevice data packet 108 over the communication session with the policyenforcing point 126.

In various embodiments, the policy enforcing point 126 may receive theclient device data packet 108 from the network application appliance130. The policy enforcing point 126 may select a network path 136 forthe client device data packet 108. The policy enforcing point 126 mayselect the previously received network path 124, 132, 136. The policyenforcing point may recognize that the client device data packet 108 maybe received from the communication session with the network applicationappliance 130, and select the previously received network path 124, 132,136 associated with the communication session. The policy enforcingpoint 126 may obtain information about the client device data packet 108similar to the corresponding method employed by the client side policyenforcing point 108 to obtain the client device data packet information122. The policy enforcing point 126 may include a database of networkpaths in its storage module. The policy enforcing point 126 may matchthe client device data packet information 122 with the database ofnetwork paths to select the network path 136.

In various embodiments, the policy enforcing point 126 processes theclient device data packet 108 received from the application appliance130 using the selected network path 132, 136. The policy enforcing point126 may select a next policy enforcing point 134 from the selectednetwork path. The policy enforcing point 126 may also identify itself inthe order list of policy enforcing points in the network path, andselect a policy enforcing point immediately following itself in theorder list. Alternately, the policy enforcing point 126 may select afirst policy enforcing point in the order list.

In various embodiments, the policy enforcing point 126 may send theclient device data packet to the next policy enforcing point 134. Thepolicy enforcing point 126 may generate a new data packet using theclient device data packet 108 and the network path 132, 136. The policyenforcing point 126 may include a portion of the network path 132, 136into the new data packet. The policy enforcing point 126 may include theportion of the order list of policy enforcing points starting from thenext policy enforcing point 134. Alternately, the policy enforcing point126 may include the entire network path 124, 132, 136 in the new datapacket. In one embodiment, the policy enforcing point 126 includes theclient device data packet 108 into the new data packet.

In some embodiments, the policy enforcing point 134 may determine thatthe retrieved network path does not yield a next policy enforcing point.The network path may be empty, or the policy enforcing point may be thelast entry in the order list of policy enforcing points in the networkpath 124, 132, 136. The policy enforcing point 134 may send the clientdevice data packet to the application service server device 138indicated in the client device data packet 108. The policy enforcingpoint 134 may send the client device data packet 108 to the applicationservice server device 138 through the policy based data network orthrough the connected network switches. In this embodiment, the policyenforcing point 134 may be a server side policy enforcing point.

The application service server device 138 may receive the client devicedata packet 108 and process the data packet 120 from the service session106. The application service server device 138 may send a data packettowards the client device over the service session 106.

Turning now to FIG. 3, in some embodiments, the server side policyenforcing point 310 may receive a server device data packet 308 over theservice session 306. The server side policy enforcing point 310retrieves information 340 from the server device data packet 308. Insome embodiments, the server device data packet 308 information 340includes layer 2 address information such as MAC address, VLAN identity,MPLS label; layer 3 address information such as an IP address, a sourceIP address, or a destination IP address; layer 4 information such as asource TCP/UDP port number, a destination TCP/UDP port number, TCP/UDPoption value; application layer information such as a cookie, an errorcode, a protocol transaction identity like DNS identity; applicationcontent information such as a document file name, a command string; orsome other content within the data packet 308.

Referring now to FIG. 4, in some embodiments, the server side policyenforcing point 402 includes a storage module 404 which contains adatabase 406 of network paths 408, where each network path in thedatabase may be associated with a packet processing criterion 410. Theserver side policy enforcing point 402 matches the server device datapacket information 414 against the database 406. The server side policyenforcing point 402 may determine the server device data packetinformation 414 matches a packet processing criterion 410 of a networkpath 408 in the database 406. The server side policy enforcing point 406selects the network path.

Returning now to FIG. 3, the server device data packet 308 may alsoinclude an indication indicating that the server device data packet 308may be destined towards the client device 336. The server side policyenforcing point 310 retrieves the indication and determines the datapacket 308 may be a server device data packet.

In other embodiments, the server side policy enforcing point 310determines that the server device data packet 308 may be destinedtowards the client device 336 by examining the layer 2 or layer 3information of the server device data packet 308. The server device datapacket 308 may be an IP packet and the server side policy enforcingpoint 310 examines the source IP address, which may be an IP addressbelonging to a server device. The server side data packet 308 may be anIP tunnel packet and the server side policy enforcing point 310 examinesthe destination IP address, which may be an IP address of the serverside policy enforcing point 310. The server side data packet 308 mayinclude a VLAN identity and the server side policy enforcing point 310may determine that the VLAN identity is a pre-determined identityindicating the server device data packet 308 may be from a server device302.

In various embodiments, the server side policy enforcing point 310examines the selected network path 326, 330, 334. The server side policyenforcing point 310 may identify itself in the order list of policyenforcing points in the selected network path 326, 330, 334. The serverside policy enforcing point 310 selects itself as the policy enforcingpoint to process the data packet 308. The server side policy enforcingpoint 310 may also determine itself in the order list may be associatedwith a network application appliance 320, the server side policyenforcing point 310 sends the server device data packet 308 to theassociated network application appliance 320.

In some embodiments, a server side policy enforcing point 310 determinesitself in the order list of policy enforcing points may be notassociated with a network application appliance. The server side policyenforcing point 310 may also select the policy enforcing point in theorder list of policy enforcing points preceding itself in the orderlist. The server side policy enforcing point 310 may send the serverdevice data packet 308 to the selected policy enforcing point 328.

In an alternate embodiment, a server side policy enforcing point 332does not find any policy enforcing point in the order list of precedingpolicy enforcing points preceding. The server side policy enforcingpoint 332 may send the server device data packet 308 to the clientdevice 336.

If a server side policy enforcing point 328 does not find itself in theorder list of policy enforcing points in the selected network path 326,330, 334, the server side policy enforcing point 328 may select a lastentry policy enforcing point 332 in the order list of policy enforcingpoints. The server side policy enforcing point 328 sends the serverdevice data packet 308 to the selected policy enforcing point 332.

In one embodiment, a server side policy enforcing point 332 fails toselect a policy enforcing point from the order list of policy enforcingpoints in the selected network path 326, 330, 334, and the server sidepolicy enforcing point 332 consequently sends the server device datapacket 308 to the client device 436.

In some embodiments, a network application appliance 320 receives aserver device data packet 308, processes the data packet 308, and sendsthe server device data packet 308 to a policy enforcing point 310. Thenetwork application appliance 320 may also modify the server device datapacket 308 prior to sending to the policy enforcing point 310.

In various embodiments, a policy enforcing point 328 receives a serverdevice data packet 322 from a network application appliance 332. Thepolicy enforcing point 328 selects a network path 330, 334 to processthe server device data packet 322. The policy enforcing point mayretrieve the network path 330, 334 from the server device data packet322. The policy enforcing point 328 may retrieve information 324 aboutthe server device data packet 322 and select the network path 330, 334using the server device data packet information 324. The policyenforcing point 328 may determine that the server device data packet 322is destined towards the client device 336, by either obtaining anindication inside the server device data packet 322 or examining thelayer 2 or layer 3 information of the server device data packet 322, asillustrated earlier.

The policy enforcing point 328 may select a policy enforcing point 332or a network application appliance 338 from the order list of policyenforcing points of the selected network path, using a similar processillustrated herein in the embodiments for a server side policy enforcingpoint. The policy enforcing point sends the server device data packet322 to the selected policy enforcing point 332, or to the selectednetwork application appliance 338.

In some embodiments, the policy enforcing point 332 may fail to select apolicy enforcing point or a network application appliance, andconsequently may send the server device data packet 322 to the clientdevice 336.

In various embodiments, the policy based data network 304 may connect toa network computer 318. The policy enforcing points 310, 328, 332 of thepolicy based data network 304 may access the network computer 318. Thenetwork computer may be considered as a portion of the storage module312 of each policy enforcing point.

The network computer 318 may include a database of network paths, whichmay be accessible to a policy enforcing point 310. When a policyenforcing point 310 accesses a database of network paths 314, the policyenforcing point 318 may access the database of network paths in thenetwork computer 318. A network path in the network computer 318 may beassociated to a network path identity. When a policy enforcing point 310incorporates a network path 326 into a data packet illustrated in FIG. 2for an embodiment described earlier in this invention, the policyenforcing point 310 may include a network path identity associated tothe network path 326 into the data packet 322. When a policy enforcingpoint 328 retrieves a network path from a data packet 322, the policyenforcing point 328 may retrieve a network path identity from the datapacket, match the network path identity with the network computer 318and retrieve the network path 326 wherein the retrieved network pathidentity from the data packet 322 matches a network path identityassociated to the retrieved network path 326 from the network computer418.

In various embodiments, the network computer 318 may be a computingdevice connected to the policy based data network 304, or a distributeddatabase. The network computer 318 may include storage modules of one ormore policy enforcing points 310, 328, 332 in the policy based datanetwork 304.

In some embodiments, the policy based data network may be connected to apolicy controller. The policy controller may be a network computingdevice comprising a storage module, a processor module and a networkmodule. The network module of the policy controller may connect to thepolicy based data network. The storage module of the policy controllerincludes one or more programming instructions which when executed by theprocessor module performs one or more functions illustrated herein.

In some embodiments, the policy controller may send a network path to apolicy enforcing point wherein the policy enforcing point stores thenetwork path into its storage module. The policy controller may alsosend a network path to be stored in the network storage. In variousembodiments, a policy enforcing point receives all the network paths inits storage module from the policy controller. The network storage mayalso receive all the network paths from the policy controller.

The policy controller may also include the network storage, and storethe network path into the network storage.

In various embodiments, a policy based network path includes anindication to a plurality of network inspection and control functionswhich are associated to a plurality of network application appliancescorresponding to the network inspection and control functions. A policyenforcing point selects a network application appliance associated to anetwork inspection and control function to process a client device orserver device data packet.

A policy enforcing point may include functionality to perform a networkinspection and control function. A policy enforcing point may alsoperform as a network application appliance.

In some embodiments, a network application appliance may include aplurality of devices serving the associated network inspection orcontrol function. A network application appliance may also include acluster of devices, a virtual chassis of devices, or a plurality ofdevices distributed over a data network. In various embodiments, apolicy enforcing point selects a device of the network applicationappliance.

A policy enforcing point may modify a network path based on theinformation obtained from a client device or server device data packet.A policy enforcing point may also modify the network path by insertinganother policy enforcing point and/or another network applicationappliance/network inspection or control function into the network path.Further, a policy enforcing point may remove or replace a policyenforcing point, a network application appliance or a network inspectionor control function from the network path.

A server side policy enforcing point may select a network path differentfrom the network path used in processing the client side data packet ofthe service session. In some embodiments, both the server side policyand the client side policy can process the data packets containinginformation concerning corporate information security policy, documenttransfer, virus scanning, phishing, email scanning, and the like. Theclient side policy can also process data packets containing informationconcerning corporate information policy, document transfer, virusscanning, and the like. Additionally, the client side can enablechecking the data packets for intrusion, distributed denial of services(DDOS) attacks, network scanning, and so forth.

When processing a current client device data packet, a client sidepolicy enforcing point may retrieve the network path, selected toprocess a prior client device data packet of the service session, toprocess the current client device data packet.

In various embodiments, the client device establishes a service with theservice device where the service includes a plurality of servicesessions. The service may be a SIP service, an FTP service, a videoconferencing service, or a collaboration service. In one embodiment, theclient side policy enforcing point selects a network path to process afirst service session of the service. The client side policy enforcingpoint stores the relationship between the selected network path with theservice into its storage module. When the client side policy enforcingpoint processes a client device data packet of a second service session,the client side policy enforcing point determines that the secondservice session, based on the client device data packet information, maybe associated to the service. The client side policy enforcing pointretrieves from its storage module the network path of the service anduses the retrieved network path to process the client device data packetof the second service session. The client side policy enforcing pointmay also select a network path different from the network path of thefirst service session to process the second service session. The clientside policy enforcing point may use a network path to process a SIPsignaling session of a SIP service and use a different network path toprocess a SIP media session of the SIP service. The client side policyenforcing point may use a network path to process an FTP control sessionof an FTP service and use a different network path to process an FTPdata session of the FTP service.

In various embodiments, the client side policy enforcement pointprocesses a prior data packet of the service session and stores theselected network path processing the prior data packet, and the priordata packet information in the storage module of the client side policyenforcement point. The client side policy enforcement point subsequentlyreceives a data packet of the service session. The client side policyenforcement point combines the current data packet information and theprior data packet information to determine a change to the selectednetwork path for the prior data packet. The client side policyenforcement point modifies the selected network path to become theselected network path to process the current data packet.

The various embodiments, implementations and features of the inventionnoted above can be combined in various ways or used separately. Thoseskilled in the art will understand from the description that theinvention can be equally applied to or used in other various differentsettings with respect to various combinations, embodiments,implementations or features provided in the description herein.

Numerous specific details are set forth in order to provide a thoroughunderstanding of the present invention. However, it will become obviousto those skilled in the art that the invention may be practiced withoutthese specific details. The description and representation herein arethe common meanings used by those experienced or skilled in the art tomost effectively convey the substance of their work to others skilled inthe art. In other instances, well-known methods, procedures, components,and circuitry have not been described in detail to avoid unnecessarilyobscuring aspects of the present invention.

Also, in this specification, reference to “one embodiment,” “anembodiment,” “various embodiments,” or “some embodiments” means that aparticular feature, structure, or characteristic described in connectionwith the embodiment can be included in at least one embodiment of theinvention. The appearances of these phrases in various places in thespecification are not necessarily all referring to the same embodiment,nor are separate or alternative embodiments mutually exclusive of otherembodiments. Further, the order of blocks in process flowcharts ordiagrams, if any, representing one or more embodiments of the inventiondo not inherently indicate any particular order nor imply anylimitations in the invention.

Other embodiments of the invention will be apparent to those skilled inthe art from a consideration of this specification or practice of theinvention disclosed herein. It is intended that the specification andexamples be considered as exemplary only, with the true scope and spiritof the invention being indicated by the following claims.

The invention can be implemented in software, hardware or a combinationof hardware and software. A number of embodiments of the invention canalso be embodied as computer readable code on a computer readablemedium. The computer readable medium may be any data storage device thatcan store data which can thereafter be read by a computer system.Examples of the computer readable medium include read-only memory,random-access memory, CD-ROMs, magnetic tape, optical data storagedevices, solid state storage drives, hard disk drives, and carrierwaves. The computer readable medium can also be distributed overnetwork-coupled computer systems so that the computer readable code maybe stored and executed in a distributed fashion.

FIG. 5 shows a diagrammatic representation of a machine in the exampleelectronic form of a computer system 500, within which a set ofinstructions for causing the machine to perform any one or more of themethodologies discussed herein may be executed. In various exampleembodiments, the machine operates as a standalone device or may beconnected (e.g., networked) to other machines. In a networkeddeployment, the machine may operate in the capacity of a server or aclient machine in a server-client network environment, or as a peermachine in a peer-to-peer (or distributed) network environment. Themachine may be a PC, a tablet PC, a set-top box (STB), a cellulartelephone, a portable music player (e.g., a portable hard drive audiodevice such as an Moving Picture Experts Group Audio Layer 3 (MP3)player), a web appliance, a network router, switch or bridge, or anymachine capable of executing a set of instructions (sequential orotherwise) that specify actions to be taken by that machine. Further,while only a single machine is illustrated, the term “machine” shallalso be taken to include any collection of machines that individually orjointly execute a set (or multiple sets) of instructions to perform anyone or more of the methodologies discussed herein.

The example computer system 500 includes a processor or multipleprocessors 502 (e.g., a central processing unit (CPU), a graphicsprocessing unit (GPU), or both), a main memory 504 and a static memory506, which communicate with each other via a bus 508. The computersystem 500 may further include a video display unit 510 (e.g., a liquidcrystal display (LCD) or a cathode ray tube (CRT)). The computer system500 may also include an alphanumeric input device 512 (e.g., akeyboard), a cursor control device 514 (e.g., a mouse), a disk driveunit 516, a signal generation device 518 (e.g., a speaker), and anetwork interface device 520.

The disk drive unit 516 includes a non-transitory computer-readablemedium 522, on which is stored one or more sets of instructions and datastructures (e.g., instructions 524) embodying or utilized by any one ormore of the methodologies or functions described herein. Theinstructions 524 may also reside, completely or at least partially,within the main memory 504 and/or within the processors 502 duringexecution thereof by the computer system 500. The main memory 504 andthe processors 502 may also constitute machine-readable media.

The instructions 524 may further be transmitted or received over anetwork 526 via the network interface device 520 utilizing any one of anumber of well-known transfer protocols (e.g., Hyper Text TransferProtocol (HTTP)).

While the computer-readable medium 522 is shown in an example embodimentto be a single medium, the term “computer-readable medium” should betaken to include a single medium or multiple media (e.g., a centralizedor distributed database and/or associated caches and servers) that storethe one or more sets of instructions. The term “computer-readablemedium” shall also be taken to include any medium that is capable ofstoring, encoding, or carrying a set of instructions for execution bythe machine and that causes the machine to perform any one or more ofthe methodologies of the present application, or that is capable ofstoring, encoding, or carrying data structures utilized by or associatedwith such a set of instructions. The term “computer-readable medium”shall accordingly be taken to include, but not be limited to,solid-state memories, optical and magnetic media, and carrier wavesignals. Such media may also include, without limitation, hard disks,floppy disks, flash memory cards, digital video disks, random accessmemory (RAMs), read only memory (ROMs), and the like.

The example embodiments described herein can be implemented in anoperating environment comprising computer-executable instructions (e.g.,software) installed on a computer, in hardware, or in a combination ofsoftware and hardware. The computer-executable instructions can bewritten in a computer programming language or can be embodied infirmware logic. If written in a programming language conforming to arecognized standard, such instructions can be executed on a variety ofhardware platforms and for interfaces to a variety of operating systems.Although not limited thereto, computer software programs forimplementing the present method can be written in any number of suitableprogramming languages such as, for example, Hypertext Markup Language(HTML), Dynamic HTML, Extensible Markup Language (XML), ExtensibleStylesheet Language (XSL), Document Style Semantics and SpecificationLanguage (DSSSL), Cascading Style Sheets (CSS), Synchronized MultimediaIntegration Language (SMIL), Wireless Markup Language (WML), Java™,Jini™, C, C++, Perl, UNIX Shell, Visual Basic or Visual Basic Script,Virtual Reality Markup Language (VRML), ColdFusion™ or other compilers,assemblers, interpreters or other computer languages or platforms.

Thus, methods and systems for processing data packets using policy basednetworks have been described. Although embodiments have been describedwith reference to specific example embodiments, it will be evident thatvarious modifications and changes can be made to these exampleembodiments without departing from the broader spirit and scope of thepresent application. Accordingly, the specification and drawings are tobe regarded in an illustrative rather than a restrictive sense.

What is claimed is:
 1. A computer-implemented method for processing adata packet using a policy based network path, the method comprising:receiving from a client, by a policy enforcing point, the data packetassociated with a service session; determining, by the policy enforcingpoint, data packet information associated with the data packet and thepolicy based network path based on the data packet information and oneor more packet processing criteria; and routing, based on thedetermination, by the policy enforcing point, the data packet along thepolicy based network path.
 2. The computer-implemented method of claim1, wherein the data packet information includes one or more of thefollowing: information associated with content of the data packet,information associated with one or more prior data packet of thesession, and further information obtained from a network computer. 3.The computer-implemented method of claim 1, wherein the informationassociated with content of the data packet includes one or more of thefollowing: a Media Access Control (MAC) address, a network interfacenumber, a source IP address, a destination IP address, a source TCP/UDPport, a destination TCP/UDP port, a TCP/UDP option, a Uniform ResourceLocator (URL), cookie information, a transaction identity, a Domain NameSystem (DNS) identity, a session identity, a receiving time of the datapacket, an error code, a document file name, and a command string. 4.The computer-implemented method of claim 1, wherein the policy basednetwork path is selected from a database of policy based data networkpaths.
 5. The computer-implemented method of claim 1, wherein the policybased network path includes an order list of further policy enforcingpoints and corresponding network application appliances, the data packetbeing routed by the policy enforcing point through the further policyenforcing points according to the order list.
 6. Thecomputer-implemented method of claim 1, wherein the policy enforcingpoint is operable to examine the policy based network path, select anext policy enforcing point, and forward the data packet to the nextpolicy enforcing point.
 7. The computer-implemented method of claim 1,further comprising generating a new data packet based on the data packetand the policy based network path and sending the new data packet to anext policy enforcing point, the new data packet including the datapacket and the policy based network path.
 8. The computer-implementedmethod of claim 1, wherein the policy enforcing point encapsulates thepolicy based network path into a protocol header of the new data packet.9. The computer-implemented method of claim 1, further comprisingestablishing, by the policy enforcing point a tunneling communicationsession and generating a new data packet adapted for the tunnelingcommunication session, the new data packet incorporating the datapacket.
 10. The computer-implemented method of claim 1, wherein the datapacket is sent to a next policy enforcing point in a furthercommunication session.
 11. The computer-implemented method of claim 1,where the policy enforcing point is operable to send the policy basednetwork path to a next policy enforcing point prior to sending the datapacket to the next policy enforcing point.
 12. A system for processing adata packet using a policy based network path, the system comprising: adatabase operable to store one or more policy based network paths; and apolicy enforcing point operable to: receive the data packet associatedwith a service session; determine data packet information associatedwith the packet; select the policy based network path from the one ormore policy based network paths stored in the database based on the datapacket information and one or more packet processing criteria; androute, based on the determined data packet information, by the policyenforcing point, the data packet along the policy based network path.13. The system of claim 12, wherein the data packet information includesone or more of the following: information associated with content of thedata packet, information associated with one or more prior data packetsof the session, and further information obtained from a networkcomputer.
 14. The system of claim 12, wherein the information associatedwith content of the data packet includes one or more of the following: aMedia Access Control (MAC) address, a network interface number, a sourceIP address, a destination IP address, a source TCP/UDP port, adestination TCP/UDP port, a TCP/UDP option, a Uniform Resource Locator(URL), cookie information, a transaction identity, a Domain Name System(DNS) identity, a session identity, a receiving time of the data packet,an error code, a document file name, and a command string.
 15. Thesystem of claim 12, wherein the policy based network path includes anorder list of further policy enforcing points and corresponding networkapplication appliances, the data packet being routed by the policyenforcing point through the further policy enforcing points according tothe order list.
 16. The system of claim 12, wherein the policy enforcingpoint is operable to examine the policy based network path, select anext policy enforcing point, and forward the data packet to the nextpolicy enforcing point.
 17. The system of claim 12, wherein the policyenforcing point is further operable to generate a new data packet basedon the data packet and the policy based network path and send the newdata packet to a next policy enforcing point, the new data packetincluding the data packet and the policy based network path.
 18. Thesystem of claim 12, wherein the policy enforcing point encapsulates thepolicy based network path into a protocol header of the new data packet.19. The system of claim 12, wherein the policy enforcing point isfurther operable to establish a tunneling communication session andgenerate a new data packet adopted for the tunneling communicationsession, the new data packet incorporating the data packet.
 20. Anon-transitory computer-readable medium comprising computer readablecode, which when executed by one or more processors, implements a methodfor processing a data packet using a policy based network path, themethod comprising: receiving from a client, by a policy enforcing point,the data packet associated with a service session; determining, by thepolicy enforcing point, data packet information associated with thepacket and the policy based network path based on the data packetinformation and one or more packet processing criteria; and routing,based on the determination, by the policy enforcing point, the datapacket along the policy based network path.